home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _F34F4F074C344300BC8E564E892ABF7E < prev    next >
Encoding:
Text File  |  2004-01-06  |  2.1 KB  |  56 lines

  1. // ===============================================================
  2. // Vertex Program: 
  3. // Description: 
  4. // Last Update: 14/08/2003
  5. // Coder: Andrey Honich
  6. // ===============================================================
  7.  
  8.       #include "../CGVPMacro.csi"
  9.  
  10.       VS20Only
  11.  
  12.       VertAttributes { POSITION_3 TEXCOORD0_2 TANG_3X3 }
  13.       MainInput { VIEWPROJ_MATRIX, LIGHT_POS, CAMERA_POS, ATTEN, uniform float4x4 TexMatrix, uniform float4 EnvColors[6] }
  14.       DeclarationsScript
  15.       {
  16.         IN_T0_TANG
  17.         OUT_T0_T1_T2_T3_T4_C0_C1
  18.       }
  19.       PositionScript = PosCommon
  20.       CoreScript
  21.       {
  22.         OUT.Tex0.xy = IN.TexCoord0.xy;
  23.         OUT.Tex1.xy = IN.TexCoord0.xy;
  24.  
  25.         TANG_MATR
  26.  
  27.         float3 lVec = LightPos.xyz - vPos.xyz;
  28.         float3 lightVec = mul(objToTangentSpace, lVec);          
  29.         float3 vDist = PROC_ATTENPIX;
  30.         OUT.Tex3.xyz = lightVec.xyz;          
  31.  
  32.         // transform light vector from object space to tangent space and pass it as a tex coords
  33.         OUT.Tex2.xyz = vDist;
  34.         OUT.Color.xyz = vDist;
  35.         
  36.         // store normalized light vector
  37.         float3 vVec = CameraPos.xyz - vPos.xyz;
  38.         float3 viewVec = mul(objToTangentSpace, vVec);
  39.  
  40.         // transform light vector from object space to tangent space and pass it as a tex coords
  41.         OUT.Tex4.xyz = viewVec.xyz;
  42.  
  43.         // Calculate average radiosity color from 6 colors (Cube)
  44.         float3 tNormal;
  45.         tNormal = mul((float3x3)TexMatrix, IN.TNormal.xyz);
  46.         float3 Compare1 = step(tNormal, 0);
  47.         float3 Compare0 = 1 - Compare1;
  48.         float3 signN = sign(tNormal);
  49.         tNormal = tNormal * tNormal;
  50.         tNormal = tNormal * signN;
  51.         float4 ColorX = EnvColors[0]*tNormal.x*Compare0.x + EnvColors[1]*(-tNormal.x)*Compare1.x;
  52.         float4 ColorY = EnvColors[2]*tNormal.y*Compare0.y + EnvColors[3]*(-tNormal.y)*Compare1.y;
  53.         float4 ColorZ = EnvColors[4]*tNormal.z*Compare0.z + EnvColors[5]*(-tNormal.z)*Compare1.z;
  54.         OUT.Color1 = (ColorX + ColorY + ColorZ) * 2.0;
  55.       }
  56.